// var i;
// var AL_GAME_HUA_Define = require("./AL_GAME_HUA_Define");
// var AL_GAME_HUA_ElementConfig = require("./AL_GAME_HUA_ElementConfig");
// var AL_GAME_HUA_GameData = require("./AL_GAME_HUA_GameData");
// var AL_GAME_HUA_GamePool = require("./AL_GAME_HUA_GamePool");
// var d = cc._decorator;
// var h = d.ccclass;
// var _ = d.property;
// var P =
//     (d.menu,
//     (function (e) {
//         function t() {
//             var t = (null !== e && e.apply(this, arguments)) || this;
//             t.anim = null;
//             t.shadow = null;
//             t.icon = null;
//             t.mask = null;
//             t.normalMaterial = null;
//             t.outlineMaterial = null;
//             t.layer = 0;
//             t.showType = AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE;
//             t._maskOpcity = 153;
//             t._iconOpacity = 204;
//             t._shadowOpacoty = 60;
//             t.isMove = !1;
//             return t;
//         }
//         __extends(t, e);
//         t.prototype.init = function () {
//             var e = this;
//             this.shuaxin_zhuti(AL_GAME_HUA_GameData.GameData.getInstance().gameTheme);
//             this.mask.node.opacity = this._maskOpcity;
//             this.node.opacity = 255;
//             this.shezhi_miaobian(!1);
//             this.reset();
//             AL_APP_SDK_MANAGER.on(
//                 AL_GAME_HUA_Define.GameEvent.ON_GAME_THEME_CHANGE,
//                 function () {
//                     e.shuaxin_zhuti(AL_GAME_HUA_GameData.GameData.getInstance().gameTheme);
//                     e.mask.node.opacity = e._maskOpcity;
//                     if (e.showType == AL_GAME_HUA_Define.Define.ElementShowType.GRAY) {
//                         e.icon.node.stopAllActions();
//                         e.icon.node.opacity = e._iconOpacity;
//                     }
//                 },
//                 this
//             );
//         };
//         t.prototype.onDestroy = function () {
//             AL_APP_SDK_MANAGER.off(this);
//         };
//         t.prototype.shuaxin_zhuti = function (e) {
//             0 == e
//                 ? ((this._maskOpcity = 153), (this._iconOpacity = 204))
//                 : ((this._maskOpcity = 102), (this._iconOpacity = 127.5));
//         };
//         t.prototype.reset = function () {
//             this.node.stopAllActions();
//             this.mask.node.opacity = this._maskOpcity;
//             this.shadow.node.opacity = this._shadowOpacoty;
//             this.node.opacity = 255;
//             this.node.scale = 1;
//             this.node.zIndex = 1e3 - this.layer;
//             this.anim.stopAllActions();
//             this.anim.scale = 1;
//             this.anim.position = cc.v3(0, 0);
//             this.anim.angle = 0;
//             this.shezhi_miaobian(!1);
//         };
//         t.prototype.tianjia_dao_gezi = function (e) {
//             var t = e.layer;
//             this.layer = t;
//             this.belone = e.lattice;
//             this.posIdx = e.posIdx;
//             e.atOnce ? this.shizhi_weizhi(e.posIdx) : this.yidong_dao_weizhi();
//         };
//         t.prototype.tianjia_dao_dange = function (e) {
//             var t = e.layer;
//             this.layer = t;
//             this.belone = e.lattice;
//             this.posIdx = 1;
//             e.atOnce ? ((this.node.zIndex = 1e3 - t), this.shizhi_weizhi(1)) : this.yidong_dao_weizhi();
//         };
//         t.prototype.chuli_zhuangtai_gaibian = function (e) {
//             this.idx = e;
//             this.shezhi_tubiao(e);
//             this.chuli_chuangjian_zhanshi();
//         };
//         t.prototype.shizhi_weizhi = function (e) {
//             this.posIdx = e;
//             var t = AL_GAME_HUA_Define.Define.LATTICE_POS[e];
//             var n = t.x;
//             var o = this.showType == AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE ? t.y : t.y - 10;
//             this.reset();
//             this.node.angle = AL_GAME_HUA_Define.Define.LATTICE_ANGLE[e];
//             this.node.setPosition(cc.v2(n, o).add(this.belone.node.getPosition()));
//             this.isMove = !1;
//         };
//         t.prototype.huoqu_weizhi = function () {
//             var e = AL_GAME_HUA_Define.Define.LATTICE_POS[this.posIdx];
//             var t = e.x;
//             var n = this.showType == AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE ? e.y : e.y - 10;
//             return cc.v2(t, n).add(this.belone.node.getPosition());
//         };
//         t.prototype.huoqu_jiaodu = function () {
//             return AL_GAME_HUA_Define.Define.LATTICE_ANGLE[this.posIdx];
//         };
//         t.prototype.yidong_dao_weizhi = function () {
//             var e = this;
//             this.isMove = !0;
//             return new Promise(function (t) {
//                 var n = e.huoqu_weizhi();
//                 var o = e.huoqu_jiaodu();
//                 var i = Math.min(n.sub(e.node.getPosition()).mag() / 1400, 0.3);
//                 e.node.stopAllActions();
//                 e.node.zIndex = 2001;
//                 cc.tween(e.node)
//                     .to(i, {
//                         position: cc.v3(n).add(cc.v3(0, 50)),
//                         angle: o
//                     })
//                     .call(function () {
//                         e.node.zIndex = 1e3 - e.layer;
//                     })
//                     .to(0.1, {
//                         position: cc.v3(n)
//                     })
//                     .call(function () {
//                         e.isMove = !1;
//                         e.reset();
//                         t();
//                     })
//                     .start();
//             });
//         };
//         t.prototype.shezhi_zhanshi_leixing = function (e) {
//             this.showType = e;
//             this.node.opacity = 255;
//             this.mask.node.opacity = this._maskOpcity;
//             e == AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE
//                 ? ((this.node.active = !0),
//                   (this.icon.node.opacity = 255),
//                   (this.mask.node.active = !1),
//                   (this.shadow.node.active = !0))
//                 : e == AL_GAME_HUA_Define.Define.ElementShowType.GRAY
//                 ? ((this.node.active = !0),
//                   (this.icon.node.opacity = this._iconOpacity),
//                   (this.mask.node.active = !0),
//                   (this.shadow.node.active = !1))
//                 : e == AL_GAME_HUA_Define.Define.ElementShowType.HIDE && (this.node.active = !1);
//         };
//         t.prototype.chuli_jianxian_zhanshi = function () {
//             var e = this;
//             if (this.showType != AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE) {
//                 var t = AL_GAME_HUA_Define.Define.ELEMET_FADA_TIME;
//                 this.reset();
//                 this.showType = AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE;
//                 this.shadow.node.active = !0;
//                 this.shadow.node.opacity = 0;
//                 cc.tween(this.mask.node)
//                     .to(
//                         t,
//                         {
//                             opacity: 0
//                         },
//                         {
//                             easing: "sineOut"
//                         }
//                     )
//                     .call(function () {
//                         e.mask.node.active = !1;
//                     })
//                     .start();
//                 cc.tween(this.shadow.node)
//                     .to(
//                         t,
//                         {
//                             opacity: this._shadowOpacoty
//                         },
//                         {
//                             easing: "sineOut"
//                         }
//                     )
//                     .call(function () {})
//                     .start();
//                 cc.tween(this.icon.node)
//                     .to(
//                         t,
//                         {
//                             opacity: 255
//                         },
//                         {
//                             easing: "sineOut"
//                         }
//                     )
//                     .call(function () {})
//                     .start();
//                 cc.tween(this.node)
//                     .to(
//                         t,
//                         {
//                             y: this.huoqu_weizhi().y
//                         },
//                         {
//                             easing: "sineOut"
//                         }
//                     )
//                     .call(function () {})
//                     .start();
//             }
//         };
//         t.prototype.chuli_yincang_zhanshi = function () {
//             if (this.showType != AL_GAME_HUA_Define.Define.ElementShowType.GRAY) {
//                 var e = AL_GAME_HUA_Define.Define.ELEMET_FADA_TIME;
//                 this.reset();
//                 this.showType = AL_GAME_HUA_Define.Define.ElementShowType.GRAY;
//                 this.node.opacity = 0;
//                 this.mask.node.active = !0;
//                 this.node.active = !0;
//                 this.mask.node.opacity = this._maskOpcity;
//                 this.icon.node.opacity = this._iconOpacity;
//                 this.shadow.node.active = !1;
//                 cc.tween(this.node)
//                     .to(
//                         e,
//                         {
//                             opacity: 255
//                         },
//                         {
//                             easing: "sineOut"
//                         }
//                     )
//                     .call(function () {})
//                     .start();
//             }
//         };
//         t.prototype.chuli_huidu_danru = function () {
//             if (this.showType != AL_GAME_HUA_Define.Define.ElementShowType.GRAY) {
//                 var e = AL_GAME_HUA_Define.Define.ELEMET_FADA_TIME;
//                 this.reset();
//                 this.showType = AL_GAME_HUA_Define.Define.ElementShowType.GRAY;
//                 this.mask.node.opacity = 0;
//                 this.mask.node.active = !0;
//                 this.shadow.node.active = !1;
//                 cc.tween(this.mask.node)
//                     .to(
//                         e,
//                         {
//                             opacity: this._maskOpcity
//                         },
//                         {
//                             easing: "sineIn"
//                         }
//                     )
//                     .call(function () {})
//                     .start();
//                 cc.tween(this.icon.node)
//                     .to(
//                         e,
//                         {
//                             opacity: this._iconOpacity
//                         },
//                         {
//                             easing: "sineIn"
//                         }
//                     )
//                     .call(function () {})
//                     .start();
//                 cc.tween(this.shadow.node)
//                     .to(
//                         e,
//                         {
//                             opacity: 0
//                         },
//                         {
//                             easing: "sineIn"
//                         }
//                     )
//                     .call(function () {})
//                     .start();
//                 cc.tween(this.node)
//                     .to(
//                         e,
//                         {
//                             y: this.huoqu_weizhi().y
//                         },
//                         {
//                             easing: "sineIn"
//                         }
//                     )
//                     .call(function () {})
//                     .start();
//             }
//         };
//         t.prototype.chuli_yincang_danchu = function () {
//             var e = this;
//             if (this.showType != AL_GAME_HUA_Define.Define.ElementShowType.HIDE) {
//                 var t = AL_GAME_HUA_Define.Define.ELEMET_FADA_TIME;
//                 this.reset();
//                 this.showType = AL_GAME_HUA_Define.Define.ElementShowType.HIDE;
//                 this.node.active = !0;
//                 cc.tween(this.node)
//                     .to(
//                         t,
//                         {
//                             opacity: 0
//                         },
//                         {
//                             easing: "sineIn"
//                         }
//                     )
//                     .call(function () {
//                         e.node.active = !1;
//                     })
//                     .start();
//             }
//         };
//         t.prototype.chuli_chuangjian_zhanshi = function () {
//             var e = this;
//             return new Promise(function (t) {
//                 if (!e.node.active) {
//                     return t();
//                 }
//                 e.reset();
//                 var n = e.node.y;
//                 var o = Math.get_random_bool();
//                 cc.tween(e.node)
//                     .delay(0.01)
//                     .to(0.08, {
//                         scaleY: 1 * (o ? 0.95 : 1.15),
//                         scaleX: 1 * (o ? 1.05 : 0.95),
//                         y: n + (o ? -2 : 5)
//                     })
//                     .to(0.24, {
//                         scaleY: 1 * (o ? 1.15 : 0.95),
//                         scaleX: 1 * (o ? 0.95 : 1.05),
//                         y: n + (o ? 5 : -2)
//                     })
//                     .to(0.1, {
//                         scaleY: 1,
//                         scaleX: 1,
//                         y: n
//                     })
//                     .call(function () {
//                         e.node.scale = 1;
//                         t();
//                     })
//                     .start();
//             });
//         };
//         t.prototype.chuli_xuanze_zhuangtai = function () {
//             this.reset();
//             this.node.zIndex = 1e3 - this.layer + 1;
//         };
//         t.prototype.chuli_tuodong_zhuangtai = function () {
//             this.node.zIndex = 2001;
//             cc.tween(this.node)
//                 .to(
//                     0.1,
//                     {
//                         angle: 0
//                     },
//                     {
//                         easing: "sineOut"
//                     }
//                 )
//                 .start();
//         };
//         t.prototype.chuli_pengzhuang_xiaohuo = function (e) {
//             var t = this;
//             return new Promise(function (n) {
//                 t.node.stopAllActions();
//                 cc.tween(t.node)
//                     .by(0.1, {
//                         scaleY: -0.2,
//                         y: -8,
//                         scaleX: 0.2
//                     })
//                     .call(function () {
//                         if (e) {
//                             e();
//                         }
//                     })
//                     .by(0.09, {
//                         scaleY: 0.2,
//                         y: 12,
//                         scaleX: -0.2
//                     })
//                     .call(function () {
//                         t.icon.spriteFrame.decRef();
//                         AL_GAME_HUA_GamePool.GamePool.Instance.put(t.node);
//                         n();
//                     })
//                     .start();
//                 t.isMove = !1;
//             });
//         };
//         t.prototype.chuli_yidong_pengzhuang_xiaohuo = function (e, t, n) {
//             var o = this;
//             return new Promise(function (i) {
//                 o.reset();
//                 o.node.active = !0;
//                 o.node.zIndex = 2001;
//                 o.mask.node.active = !1;
//                 o.icon.node.opacity = 255;
//                 o.shadow.node.active = !0;
//                 cc.tween(o.node)
//                     .to(0.05, {
//                         scale: 1.6
//                     })
//                     .to(
//                         0.4,
//                         {
//                             position: cc.v3(e),
//                             angle: t
//                         },
//                         {
//                             easing: "backIn"
//                         }
//                     )
//                     .by(0.09, {
//                         scaleY: -0.2,
//                         y: -8,
//                         scaleX: 0.1
//                     })
//                     .call(function () {
//                         n();
//                     })
//                     .by(0.085, {
//                         scaleY: 0.2,
//                         y: 8,
//                         scaleX: -0.1
//                     })
//                     .call(function () {
//                         o.icon.spriteFrame.decRef();
//                         AL_GAME_HUA_GamePool.GamePool.Instance.put(o.node);
//                         i();
//                     })
//                     .start();
//                 o.isMove = !1;
//             });
//         };
//         t.prototype.shezhi_tubiao = function (e) {
//             if (void 0 === e) {
//                 e = this.idx;
//             }
//             return __awaiter(this, void 0, void 0, function () {
//                 var t;
//                 return __generator(this, function (n) {
//                     switch (n.label) {
//                         case 0:
//                             return [4, AL_GAME_HUA_ElementConfig.ElementConfig.getInstance().jiazai_tubiao_icon(e)];
//                         case 1:
//                             t = n.sent();
//                             if (!(e !== this.idx)) {
//                                 this.shezhi_sprite_frame(t);
//                             }
//                             return [2];
//                     }
//                 });
//             });
//         };
//         t.prototype.shezhi_sprite_frame = function (e) {
//             return __awaiter(this, void 0, void 0, function () {
//                 return __generator(this, function () {
//                     this.icon.spriteFrame = e;
//                     this.shadow.spriteFrame = e;
//                     this.mask.spriteFrame = e;
//                     this.addAutoReleaseAssets(e);
//                     return [2];
//                 });
//             });
//         };
//         t.prototype.shezhi_miaobian = function (e) {
//             this.icon.setMaterial(0, e ? this.outlineMaterial : this.normalMaterial);
//         };
//         t.prototype.chuli_yindao = function () {
//             this.anim.scale = 1;
//             cc.tween(this.anim)
//                 .to(0.13, {
//                     scaleY: 1.15,
//                     scaleX: 0.9
//                 })
//                 .to(0.13, {
//                     scaleY: 1,
//                     scaleX: 1
//                 })
//                 .to(0.1, {
//                     scaleY: 1.1,
//                     scaleX: 0.95
//                 })
//                 .to(0.1, {
//                     scaleY: 1,
//                     scaleX: 1
//                 })
//                 .delay(1.5)
//                 .union()
//                 .repeatForever()
//                 .start();
//         };
//         t.prototype.chuangjian_pengzhuang_xiaoguo = function () {
//             if (this.node.parent) {
//                 var e = AL_GAME_HUA_GamePool.GamePool.Instance.get("crashEffect");
//                 e.zIndex = 1010;
//                 this.node.parent.addChild(e);
//                 var t = e.children[0].getComponent(sp.Skeleton);
//                 var n = t.setAnimation(0, "show", !1);
//                 t.setTrackCompleteListener(n, function () {
//                     AL_GAME_HUA_GamePool.GamePool.Instance.put(e);
//                 });
//                 e.setPosition(this.node.position);
//                 return e;
//             }
//         };
//         __decorate([_(cc.Node)], t.prototype, "anim", void 0);
//         __decorate([_(cc.Sprite)], t.prototype, "shadow", void 0);
//         __decorate([_(cc.Sprite)], t.prototype, "icon", void 0);
//         __decorate([_(cc.Sprite)], t.prototype, "mask", void 0);
//         __decorate([_(cc.Material)], t.prototype, "normalMaterial", void 0);
//         __decorate([_(cc.Material)], t.prototype, "outlineMaterial", void 0);
//         return __decorate([h], t);
//     })(cc.Component));
// exports.default = P;


// 引入外部依赖
const AL_GAME_HUA_Define = require("./AL_GAME_HUA_Define");
const AL_GAME_HUA_ElementConfig = require("./AL_GAME_HUA_ElementConfig");
const AL_GAME_HUA_GameData = require("./AL_GAME_HUA_GameData");
const AL_GAME_HUA_GamePool = require("./AL_GAME_HUA_GamePool");
const { ccclass, property } = cc._decorator;

/**
 * 类P描述
 */
@ccclass
class HUA_Element extends cc.Component {
    @property(cc.Node)
    anim = null;

    @property(cc.Sprite)
    shadow = null;

    @property(cc.Sprite)
    icon = null;

    @property(cc.Sprite)
    mask = null;

    @property(cc.Material)
    normalMaterial = null;

    @property(cc.Material)
    outlineMaterial = null;


    layer = 0;
    belone = null;
    posIdx = 0;

    constructor() {
        super();
        this.layer = 0;
        this.showType = AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE;
        this._maskOpacity = 153;
        this._iconOpacity = 204;
        this._shadowOpacity = 60;
        this.isMove = false;
    }

    /**
     * 初始化方法
     */
    init() {
        const self = this;
        this.shuaxin_zhuti(AL_GAME_HUA_GameData.GameData.getInstance().gameTheme);
        this.mask.node.opacity = this._maskOpacity;
        this.node.opacity = 255;
        this.shezhi_miaobian(false);
        this.reset();

        AL_APP_SDK_MANAGER.on(
            AL_GAME_HUA_Define.GameEvent.ON_GAME_THEME_CHANGE,
            function () {
                self.shuaxin_zhuti(AL_GAME_HUA_GameData.GameData.getInstance().gameTheme);
                self.mask.node.opacity = self._maskOpacity;
                if (self.showType === AL_GAME_HUA_Define.Define.ElementShowType.GRAY) {
                    self.icon.node.stopAllActions();
                    self.icon.node.opacity = self._iconOpacity;
                }
            },
            this
        );
    }

    /**
     * 销毁方法
     */
    onDestroy() {
        AL_APP_SDK_MANAGER.off(this);
    }

    /** 
     * 刷新主题 
     * @param {Number} theme 游戏主题 
     */
    shuaxin_zhuti(theme) {
        if (theme === 0) {
            this._maskOpacity = 153;
            this._iconOpacity = 204;
        } else {
            this._maskOpacity = 102;
            this._iconOpacity = 127.5;
        }
    }

    /** 
     * 重置方法 
     */
    reset() {
        this.node.stopAllActions();
        this.mask.node.opacity = this._maskOpacity;
        this.shadow.node.opacity = this._shadowOpacity;
        this.node.opacity = 255;
        this.node.scale = 1;
        this.node.zIndex = 1000 - this.layer;
        this.anim.stopAllActions();
        this.anim.scale = 1;
        this.anim.position = cc.v3(0, 0);
        this.anim.angle = 0;
        this.shezhi_miaobian(false);
    }

    /** 
     * 添加到格子 
     * @param {Object} options 参数配置 
     */
    tianjia_dao_gezi(options) {
        const { layer, lattice, posIdx, atOnce } = options;
        this.layer = layer;
        this.belone = lattice;
        this.posIdx = posIdx;
        if (atOnce) {
            this.shizhi_weizhi(posIdx);
        } else {
            this.yidong_dao_weizhi();
        }
    }

    /** 
     * 添加到单个 
     * @param {Object} options 参数配置 
     */
    tianjia_dao_dange(options) {
        const { layer, lattice, atOnce } = options;
        this.layer = layer;
        this.belone = lattice;
        this.posIdx = 1;
        if (atOnce) {
            this.node.zIndex = 1000 - layer;
            this.shizhi_weizhi(1);
        } else {
            this.yidong_dao_weizhi();
        }
    }

    /** 
     * 状态改变 
     * @param {Number} index 索引 
     */
    chuli_zhuangtai_gaibian(index) {
        this.idx = index;
        this.shezhi_tubiao(index);
        this.chuli_chuangjian_zhanshi();
    }

    /** 
     * 设置位置 
     * @param {Number} index 索引 
     */
    shizhi_weizhi(index) {
        this.posIdx = index;
        const latticePos = AL_GAME_HUA_Define.Define.LATTICE_POS[index];
        const { x, y } = latticePos;
        const adjustedY = this.showType === AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE ? y : y - 10;
        this.reset();
        this.node.angle = AL_GAME_HUA_Define.Define.LATTICE_ANGLE[index];
        this.node.setPosition(cc.v2(x, adjustedY).add(this.belone.node.getPosition()));
        this.isMove = false;
    }

    /**
     * 获取位置
     * @returns {cc.Vec2}
     */
    huoqu_weizhi() {
        const latticePos = AL_GAME_HUA_Define.Define.LATTICE_POS[this.posIdx];
        const { x, y } = latticePos;
        const adjustedY = this.showType === AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE ? y : y - 10;
        return cc.v2(x, adjustedY).add(this.belone.node.getPosition());
    }

    /**
     * 获取角度
     * @returns {Number}
     */
    huoqu_jiaodu() {
        return AL_GAME_HUA_Define.Define.LATTICE_ANGLE[this.posIdx];
    }

    /**
     * 移动到位置
     * @returns {Promise}
     */
    yidong_dao_weizhi() {
        const self = this;
        this.isMove = true;
        return new Promise((resolve) => {
            const targetPos = self.huoqu_weizhi();
            const targetAngle = self.huoqu_jiaodu();
            const duration = Math.min(targetPos.sub(self.node.getPosition()).mag() / 1400, 0.3);
            self.node.stopAllActions();
            self.node.zIndex = 2001;
            cc.tween(self.node)
                .to(duration, {
                    position: cc.v3(targetPos).add(cc.v3(0, 50)),
                    angle: targetAngle
                })
                .call(() => {
                    self.node.zIndex = 1000 - self.layer;
                })
                .to(0.1, {
                    position: cc.v3(targetPos)
                })
                .call(() => {
                    self.isMove = false;
                    self.reset();
                    resolve();
                })
                .start();
        });
    }

    /**
     * 设置展示类型
     * @param {Number} type 展示类型
     */
    shezhi_zhanshi_leixing(type) {
        this.showType = type;
        this.node.opacity = 255;
        this.mask.node.opacity = this._maskOpacity;
        if (type === AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE) {
            this.node.active = true;
            this.icon.node.opacity = 255;
            this.mask.node.active = false;
            this.shadow.node.active = true;
        } else if (type === AL_GAME_HUA_Define.Define.ElementShowType.GRAY) {
            this.node.active = true;
            this.icon.node.opacity = this._iconOpacity;
            this.mask.node.active = true;
            this.shadow.node.active = false;
        } else if (type === AL_GAME_HUA_Define.Define.ElementShowType.HIDE) {
            this.node.active = false;
        }
    }

    /**
     * 渐显展示
     */
    chuli_jianxian_zhanshi() {
        if (this.showType !== AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE) {
            const fadeTime = AL_GAME_HUA_Define.Define.ELEMET_FADA_TIME;
            this.reset();
            this.showType = AL_GAME_HUA_Define.Define.ElementShowType.ACTIVE;
            this.shadow.node.active = true;
            this.shadow.node.opacity = 0;
            cc.tween(this.mask.node)
                .to(
                    fadeTime,
                    {
                        opacity: 0
                    },
                    {
                        easing: "sineOut"
                    }
                )
                .call(() => {
                    this.mask.node.active = false;
                })
                .start();
            cc.tween(this.shadow.node)
                .to(
                    fadeTime,
                    {
                        opacity: this._shadowOpacity
                    },
                    {
                        easing: "sineOut"
                    }
                )
                .start();
            cc.tween(this.icon.node)
                .to(
                    fadeTime,
                    {
                        opacity: 255
                    },
                    {
                        easing: "sineOut"
                    }
                )
                .start();
            cc.tween(this.node)
                .to(
                    fadeTime,
                    {
                        y: this.huoqu_weizhi().y
                    },
                    {
                        easing: "sineOut"
                    }
                )
                .start();
        }
    }

    /**
     * 隐藏展示
     */
    chuli_yincang_zhanshi() {
        if (this.showType !== AL_GAME_HUA_Define.Define.ElementShowType.GRAY) {
            const fadeTime = AL_GAME_HUA_Define.Define.ELEMET_FADA_TIME;
            this.reset();
            this.showType = AL_GAME_HUA_Define.Define.ElementShowType.GRAY;
            this.node.opacity = 0;
            this.mask.node.active = true;
            this.node.active = true;
            this.mask.node.opacity = this._maskOpacity;
            this.icon.node.opacity = this._iconOpacity;
            this.shadow.node.active = false;
            cc.tween(this.node)
                .to(
                    fadeTime,
                    {
                        opacity: 255
                    },
                    {
                        easing: "sineOut"
                    }
                )
                .start();
        }
    }

    /**
     * 灰度淡入效果
     */
    chuli_huidu_danru() {
        if (this.showType !== AL_GAME_HUA_Define.Define.ElementShowType.GRAY) {
            const fadeTime = AL_GAME_HUA_Define.Define.ELEMET_FADA_TIME;
            this.reset();
            this.showType = AL_GAME_HUA_Define.Define.ElementShowType.GRAY;
            this.mask.node.opacity = 0;
            this.mask.node.active = true;
            this.shadow.node.active = false;
            cc.tween(this.mask.node)
                .to(
                    fadeTime,
                    {
                        opacity: this._maskOpacity
                    },
                    {
                        easing: "sineIn"
                    }
                )
                .start();
            cc.tween(this.icon.node)
                .to(
                    fadeTime,
                    {
                        opacity: this._iconOpacity
                    },
                    {
                        easing: "sineIn"
                    }
                )
                .start();
            cc.tween(this.shadow.node)
                .to(
                    fadeTime,
                    {
                        opacity: 0
                    },
                    {
                        easing: "sineIn"
                    }
                )
                .start();
            cc.tween(this.node)
                .to(
                    fadeTime,
                    {
                        y: this.huoqu_weizhi().y
                    },
                    {
                        easing: "sineIn"
                    }
                )
                .start();
        }
    }

    /**
     * 隐藏淡出效果
     */
    chuli_yincang_danchu() {
        const self = this;
        if (this.showType !== AL_GAME_HUA_Define.Define.ElementShowType.HIDE) {
            const fadeTime = AL_GAME_HUA_Define.Define.ELEMET_FADA_TIME;
            this.reset();
            this.showType = AL_GAME_HUA_Define.Define.ElementShowType.HIDE;
            this.node.active = true;
            cc.tween(this.node)
                .to(
                    fadeTime,
                    {
                        opacity: 0
                    },
                    {
                        easing: "sineIn"
                    }
                )
                .call(() => {
                    self.node.active = false;
                })
                .start();
        }
    }

    /**
     * 创建展示效果
     * @returns {Promise}
     */
    chuli_chuangjian_zhanshi() {
        const self = this;
        return new Promise((resolve) => {
            if (!self.node.active) {
                return resolve();
            }
            self.reset();
            const initialY = self.node.y;
            const randomBool = Math.random() >= 0.5;
            cc.tween(self.node)
                .delay(0.01)
                .to(0.08, {
                    scaleY: randomBool ? 0.95 : 1.15,
                    scaleX: randomBool ? 1.05 : 0.95,
                    y: initialY + (randomBool ? -2 : 5)
                })
                .to(0.24, {
                    scaleY: randomBool ? 1.15 : 0.95,
                    scaleX: randomBool ? 0.95 : 1.05,
                    y: initialY + (randomBool ? 5 : -2)
                })
                .to(0.1, {
                    scaleY: 1,
                    scaleX: 1,
                    y: initialY
                })
                .call(() => {
                    self.node.scale = 1;
                    resolve();
                })
                .start();
        });
    }

    /**
     * 选择状态
     */
    chuli_xuanze_zhuangtai() {
        this.reset();
        this.node.zIndex = 1000 - this.layer + 1;
    }

    /**
     * 拖动状态
     */
    chuli_tuodong_zhuangtai() {
        this.node.zIndex = 2001;
        cc.tween(this.node)
            .to(
                0.1,
                {
                    angle: 0
                },
                {
                    easing: "sineOut"
                }
            )
            .start();
    }

    /**
     * 碰撞效果
     * @param {Function} callback 回调函数
     * @returns {Promise}
     */
    chuli_pengzhuang_xiaohuo(callback) {
        const self = this;
        return new Promise((resolve) => {
            self.node.stopAllActions();
            cc.tween(self.node)
                .by(0.1, {
                    scaleY: -0.2,
                    y: -8,
                    scaleX: 0.2
                })
                .call(() => {
                    if (callback) {
                        callback();
                    }
                })
                .by(0.09, {
                    scaleY: 0.2,
                    y: 12,
                    scaleX: -0.2
                })
                .call(() => {
                    self.icon.spriteFrame.decRef();
                    AL_GAME_HUA_GamePool.GamePool.Instance.put(self.node);
                    resolve();
                })
                .start();
            self.isMove = false;
        });
    }

    /**
     * 移动碰撞效果
     * @param {cc.Vec3} position 目标位置
     * @param {Number} angle 目标角度
     * @param {Function} callback 回调函数
     * @returns {Promise}
     */
    chuli_yidong_pengzhuang_xiaohuo(position, angle, callback) {
        const self = this;
        return new Promise((resolve) => {
            self.reset();
            self.node.active = true;
            self.node.zIndex = 2001;
            self.mask.node.active = false;
            self.icon.node.opacity = 255;
            self.shadow.node.active = true;
            cc.tween(self.node)
                .to(0.05, {
                    scale: 1.6
                })
                .to(
                    0.4,
                    {
                        position: cc.v3(position),
                        angle: angle
                    },
                    {
                        easing: "backIn"
                    }
                )
                .by(0.09, {
                    scaleY: -0.2,
                    y: -8,
                    scaleX: 0.1
                })
                .call(() => {
                    callback();
                })
                .by(0.085, {
                    scaleY: 0.2,
                    y: 8,
                    scaleX: -0.1
                })
                .call(() => {
                    self.icon.spriteFrame.decRef();
                    AL_GAME_HUA_GamePool.GamePool.Instance.put(self.node);
                    resolve();
                })
                .start();
            self.isMove = false;
        });
    }

    /**
     * 设置图标
     * @param {Number} index 索引
     */
    async shezhi_tubiao(index = this.idx) {
        const iconSpriteFrame = await AL_GAME_HUA_ElementConfig.ElementConfig.getInstance().jiazai_tubiao_icon(index);
        if (index === this.idx) {
            this.shezhi_sprite_frame(iconSpriteFrame);
        }
    }

    /**
     * 设置精灵框架
     * @param {cc.SpriteFrame} spriteFrame 精灵框架
     */
    async shezhi_sprite_frame(spriteFrame) {
        this.icon.spriteFrame = spriteFrame;
        this.shadow.spriteFrame = spriteFrame;
        this.mask.spriteFrame = spriteFrame;
        this.addAutoReleaseAssets(spriteFrame);
    }

    /**
     * 设置描边
     * @param {Boolean} isOutlined 是否描边
     */
    shezhi_miaobian(isOutlined) {
        this.icon.setMaterial(0, isOutlined ? this.outlineMaterial : this.normalMaterial);
    }

    /**
     * 引导动画
     */
    chuli_yindao() {
        this.anim.scale = 1;
        cc.tween(this.anim)
            .to(0.13, {
                scaleY: 1.15,
                scaleX: 0.9
            })
            .to(0.13, {
                scaleY: 1,
                scaleX: 1
            })
            .to(0.1, {
                scaleY: 1.1,
                scaleX: 0.95
            })
            .to(0.1, {
                scaleY: 1,
                scaleX: 1
            })
            .delay(1.5)
            .union()
            .repeatForever()
            .start();
    }

    /**
     * 创建碰撞效果
     * @returns {?cc.Node} 碰撞效果节点
     */
    chuangjian_pengzhuang_xiaoguo() {
        if (this.node.parent) {
            const crashEffectNode = AL_GAME_HUA_GamePool.GamePool.Instance.get("crashEffect");
            crashEffectNode.zIndex = 1010;
            this.node.parent.addChild(crashEffectNode);
            const skeletonComponent = crashEffectNode.children[0].getComponent(sp.Skeleton);
            const animationTrack = skeletonComponent.setAnimation(0, "show", false);
            skeletonComponent.setTrackCompleteListener(animationTrack, () => {
                AL_GAME_HUA_GamePool.GamePool.Instance.put(crashEffectNode);
            });
            crashEffectNode.setPosition(this.node.position);
            return crashEffectNode;
        }
        return null;
    }
}

exports.default = HUA_Element;